Process

Oct 30, 2023 6:53 AM
Mar 25, 2024 11:01 PM

프로세스

실행중인 프로그램. 디스크에 있는 프로그램이 메모리에 로드되면 프로세스가 된다.

프로세스의 문맥

프로세스의 현재 상태를 나타내는데 필요한 모든 요소를 프로세스 문맥 이라고 함

현대 컴퓨터 에서는 타임 쉐어링 멀티테스킹 등 여러 프로세서가 실행되므로 프로세스의 현재 문맥저장하고 알아야, 프로세스를 이어하기 할 수 있다

25fba5a1d385c731b77d05acad4a2912_MD5.jpeg

❓kernel stack 어떤 정보들이 저장되고 kernel stack과 pcb 의 차이가 궁금하다

프로세스의 상태

09a5ec5f238bcd0ab12d4df41944a5f6_MD5.jpeg
프로세스는 상태가 변경되며 수행된다.


running 상태의 프로세스 A 가 사용자로부터 키보드 입력을 받아서 결과를 확인하고 실행하는 과정

PCB

운영체제가 프로세스를 관리하기 위해 프로세스당 유지하는 정보
다음의 구성요소들을 구조체로 유지

  1. os가 관리상 사용하는 정보
    • process state, process id
    • scheduling information priority
  2. cpu 수행 관련 하드웨어 값
    • program counter, registers
  3. 메모리 관련
    • code ,data, stack 의 위치정보
  4. 파일관련

e7b565557d816c41846326f6710d4c42_MD5.jpeg|300

문맥 교환(context switch)

e66e6456d0bae488631f66716382814b_MD5.jpeg

그림에서 회색 박스 부분이 kernel mode 로 전환된다는 의미라고함. 저 짧은 순간에만 OS가 실행되고 이외 시간에 OS는 sleeping 함. 즉, OS 는 항상 백그라운드에서 실행되거나 하는 프로세스가 아니다. context switch는 프로세스 관리를 위해서 필요하지만 실질적인 작업을 하지 못하는 것이기 때문에 가능한 빠르게 이루어 져야 한다.

  1. system call 후에 프로세스 이어할때
    fd9a69cc49e2f915331c93bfd39b05c6_MD5.jpeg
  2. timer interrupt 등으로 프로세스 바꿀때
    1509471521517a106e49583706cdb5a3_MD5.jpeg

1의 경우에도 context의 일부를 pcb 에 저장해야하긴하지만 문맥교환 까지는 아님
2의 경우에는 문맥교환 일어남 (+cache memory flush도 일어남 )

프로세스를 스케줄링하기 위한 큐

스케줄러

프로세스 상태(suspended 추가)

blocked, suspended 차이

Blocked : 자신이 요청한 event가 만족되면 Ready
Suspended : 외부에서 resume해 주어야 active

c1c29c534a7f1cdfdc135de24e5e1a61_MD5.jpeg


Thread

CPU 수행의 기본 단위 또는 프로세스 안의 제어권의 흐름. 스레드가 수행되는 환경을 Task라고 부르는데, 전통적인 프로세스는 하나의 스레드가 있는 Task와 일치한다

동일한 일을 하는 프로세스가 여러개 있다고 했을 때 별도의 주소공간을 각각 만들면 메모리 낭비
⇒ 같은 주소 공간에서 각자 다른 code를 수행하게 해주면 됨. 그게 바로 Thread

스레드 사용이유

  1. 두 프로세스가 하나의 데이터를 공유하려면 메시지 패싱이나 공유 메모리 또는 파이프를 사용해야하는데 효율이 낮고, 개발자가 구현 관리하기도 번거롭다.
  2. 프로세스 사이에 문맥 교환이 자주 일어나면 성능저하가 발생하는데, 스레드 전환에도 문맥교환이 일어나지 빠르다

a95240e1d70035e83062aa6dfa04f634_MD5.jpeg

thread 장점

implementation of threads

퀴즈

reference